package zzg.study.protocol;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

/**
 * @Classname Packet
 * @Description 客户端与服务端通信的Java对象
 * @Date 2023/11/28 21:37
 * @Author zhuzhenguo
 */
@Data
public abstract class Packet {

    /*
    * 将Java对象根据协议封装成二进制数据包的过程称为编码，从二进制数据包中解析出Java对象的过程称为解码
    * */

    /**
     * 协议版本
     */
    @JSONField(deserialize = false, serialize = false)
    private Byte version = 1;

    /**
     * 指令
     * 所有的指令数据包都必须实现这个方法
     */
    @JSONField(serialize = false)
    public abstract Byte getCommand();

}
